#ifndef __CHANNEL_HPP__
#define __CHANNEL_HPP__

#include <string>
#include <unistd.h>

// master进程需要管理一堆管道：先描述，再组织
class Channel
{
public:
    Channel(int wfd, pid_t who) : _wfd(wfd), _who(who)
    {
        _name += "Channel-" + std::to_string(wfd) + "-" + std::to_string(who);
    }
    std::string Name()
    {
        return _name;
    }
    pid_t Who()
    {
        return _who;
    }
    void Close()
    {
        ::close(_wfd);
    }
    void Send(int command) // master发送任务
    {
        ::write(_wfd, &command, sizeof(command));
    }
    ~Channel()
    {
    }

private:
    int _wfd;          // 父进程需要知道管道写端的文件描述符
    std::string _name; // 给管道起个名字
    pid_t _who;        // 父进程想知道通过管道给worker进程
};
#endif